home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-02 | 25.2 KB | 1,409 lines |
-
- ** ²RASTER LIGHTSOURCED VECTOR¹
- ** ³CODED BY CRADON/MATRIX¹
- ** ASM-ONE FORMAT
-
- *³******************************************************************************¹
-
- SECTION A,CODE_C
-
- START MOVEM.L D0-A6,-(A7)
- MOVE.W $DFF01C,INTENA
- MOVE.W $DFF002,DMACON
- MOVE.W $DFF010,ADKCON
- MOVE.W #%0111111111111111,$DFF096
- MOVE.W #%0111111111111111,$DFF09A
- MOVE.W #%0111111111111111,$DFF09C
- JSR INITRAS
- JSR INITCOL
- MOVE.L $6C,OLDIRQ
- MOVE.L #MYIRQ,$6C
- MOVE.W #%1000001111000000,$DFF096
- MOVE.W #%1100000000110000,$DFF09A
- JSR INITCOP
- LOOP BTST #6,$BFE001
- BNE.B LOOP
- ENDE MOVE.W #%0111111111111111,$DFF096
- MOVE.W #%0111111111111111,$DFF09A
- MOVE.W #%0111111111111111,$DFF09C
- MOVE.L OLDIRQ(PC),$00006C
- MOVE.W DMACON(PC),D0
- OR.W #$8000,D0
- MOVE.W D0,$DFF096
- MOVE.W ADKCON(PC),D0
- OR.W #$8000,D0
- MOVE.W D0,$DFF09E
- MOVE.W INTENA(PC),D0
- OR.W #$C000,D0
- MOVE.W D0,$DFF09A
- MOVE.W #0,$DFF088
- MOVEM.L (A7)+,D0-A6
- RTS
-
- ** ²MAKE COPPERLIST SELFACTIVATE¹ ***********************************************
-
- INITCOP MOVE.L #COPPER1,D0
- LEA.L ADRESS2,A0
- MOVE.W D0,6(A0)
- SWAP D0
- MOVE.W D0,2(A0)
- LEA.L NUMBER,A0
- MOVE.W PLANER(PC),D0
- ROR.W #4,D0
- OR.W D0,2(A0)
- MOVE.L #COPPER1,$DFF084
- MOVE.B #$00,$DFF08A
- RTS
-
- ** ²INIT RASTERLINES IN COPPERLIST¹ *********************************************
-
- INITRAS LEA.L RASTER,A0
- MOVE.W rasterlines,D0
- MOVE.W STARTRAST,D2
-
- RASLOP MOVE.W D2,(A0)+
- MOVE.W #$FF00,(A0)+
- MOVE.W #$0182,(A0)+
- MOVE.W #$0000,(A0)+
- MOVE.W #$0184,(A0)+
- MOVE.W #$0000,(A0)+
- MOVE.W #$0188,(A0)+
- MOVE.W #$0000,(A0)+
- ADD.W #$100,D2
- SUBQ.W #1,D0
- BNE RASLOP
- RTS
-
- ** ²UPDATE RASTER COLOURS¹ ******************************************************
-
- RASTCOL MOVEM.L D0-A6,-(A7)
- CMP.W #0,D0
- BEQ FIRST
- CMP.W #1,D0
- BEQ SECOND
- CMP.W #2,D0
- BEQ THIRD
- RASOUT MOVEM.L (A7)+,D0-A6
- RTS
-
- FIRST LEA.L DESTIN(PC),A4
- LEA.L RASTER,A5
- EXT.L D2
- DIVU #12,D2
- EXT.L D2
- LSL.W #1,D2
- MOVE.w rasterlines,D1
- WRITE0 MOVE.W (A4,D2.W),6(A5)
- ADD.L #20,A4
- ADD.L #16,A5
- SUBQ.W #1,D1
- BNE WRITE0
- BRA.S RASOUT
-
- SECOND LEA.L DESTIN(PC),A4
- LEA.L RASTER,A5
- EXT.L D2
- DIVU #12,D2
- EXT.L D2
- LSL.W #1,D2
- MOVE.w rasterlines,D1
- WRITE1 MOVE.W (A4,D2.W),$A(A5)
- ADD.L #20,A4
- ADD.L #16,A5
- SUBQ.W #1,D1
- BNE WRITE1
- BRA.S RASOUT
-
- THIRD LEA.L DESTIN(PC),A4
- LEA.L RASTER,A5
- EXT.L D2
- DIVU #12,D2
- EXT.L D2
- LSL.W #1,D2
- MOVE.w rasterlines,D1
- WRITE2 MOVE.W (A4,D2.W),$E(A5)
- ADD.L #20,A4
- ADD.L #16,A5
- SUBQ.W #1,D1
- BNE WRITE2
- BRA.W RASOUT
-
- ** ²RASTER COLOURS¹ *************************************************************
-
- INITCOL LEA.L SOURCE(PC),A0
- LEA.L DESTIN(PC),A1
- MOVE.W RASTERLINES,D3
- COLMAIN MOVE.W (A0)+,D0
- MOVEQ #10,D2
- LOP MOVE D0,(A1)+
- MOVE.W D0,D1
- AND.W #$000F,D1
- CMP.W #$F,D1
- BEQ .GREEN
- ADDQ #1,D1
- AND.W #$0FF0,D0
- OR D1,D0
- .GREEN MOVE.W D0,D1
- AND.W #$00F0,D1
- LSR.W #4,D1
- CMP.W #$F,D1
- BEQ .RED
- ADDQ #1,D1
- LSL.W #4,D1
- AND.W #$0F0F,D0
- OR D1,D0
- .RED MOVE.W D0,D1
- AND.W #$0F00,D1
- LSR.W #8,D1
- CMP.W #$F,D1
- BEQ .NEXT
- ADDQ #1,D1
- LSL.W #8,D1
- AND.W #$00FF,D0
- OR D1,D0
- .NEXT SUBQ.W #1,D2
- BNE LOP
- SUBQ.W #1,D3
- BNE COLMAIN
- RTS
-
- *******************************************************************************
- ****************************** ²FILLED VECTOR¹ **********************************
- *******************************************************************************
-
- VECTOR MOVE.W #320,GLOBALXMIN
- MOVE.W #0,GLOBALXMAX
- MOVE.W #256,GLOBALYMIN
- MOVE.W #0,GLOBALYMAX
- JSR ANGLES
- LEA.L FIGURE,A1
- LEA.L SIN_TABLE,A2
- LEA.L COS_TABLE,A3
- VLOOP MOVE.L SCREEN_ADRESS,A0
- MOVE.W (A1)+,D0
- CMP.W #$FFFF,D0
- BEQ.W VECOUT
- MOVE.W (A1)+,D1
- MOVE.W (A1)+,D2
- BSR.W NORMAL ; ³ROTATE VECTORNORMAL (0-XN,0-YN,0-ZN)¹
- MOVE.W (A1)+,D3
- CMP.W D3,D2 ; ³FRONTSIDE OF PLANE?¹
- BGT.S .PLANE
- MOVE.W (A1)+,D0
- EXT.L D0
- LSL.W #3,D0
- ADDQ #2,D0
- ADD.L D0,A1 ; ³POINT AT NEXT PLANE¹
- BRA.S VLOOP
- .PLANE MOVE.W (A1)+,COUNTER ; ³NUMBER OF POINTS¹
- MOVE.W (A1)+,D0 ; ³SELECTED COLOUR¹
- MOVE.W #10240,D1
- MULU D0,D1
- ADD.L D1,A0
-
- jsr rastcol
-
- LINES MOVE.W (A1)+,D0
- MOVE.W (A1)+,D1
- MOVE.W (A1)+,D2
- SUB.W XCENTER(PC),D0 ; ³CENTER OBJECT¹
- SUB.W YCENTER(PC),D1
- SUB.W ZCENTER(PC),D2
- BSR.B ROTATE ; ³ROTATE 3D POINT¹
- ADD.W ZCENTER(PC),D2
- JSR CONVERT ; ³CONVERT FROM 3D TO 2D¹
- ADD.W XCENTER(PC),D0
- ADD.W YCENTER(PC),D1
- JSR EXTREM ; ³NOTE PLANE MAX AND MIN¹
- JSR LINE ; ³DRAW LINE FROM LAST POINT¹
- SUB.W #1,COUNTER
- BNE.B LINES
- JSR FILL ; ³FILL PLANE¹
- JSR GLOBAL ; ³NOTE GLOBAL EXTRIEMES (CLEAR)¹
- MOVE.W #256,YMIN ; ³RESET FOR NEXT PLANE¹
- MOVE.W #0,YMAX
- MOVE.W #320,XMIN
- MOVE.W #0,XMAX
- BRA.W VLOOP ; ³WORK ON NEXT PLANE¹
- VECOUT RTS
-
- ** ²ROTATE¹ *********************************************************************
-
- ROTATE MOVE.W XVINKEL(PC),D5 ; X ANGLE
- MOVE.W YVINKEL(PC),D6 ; Y ANGLE
- MOVE.W ZVINKEL(PC),D7 ; Z ANGLE
- LSL.W #1,D5 ; X ANGLE *2
- LSL.W #1,D6 ; Y ANGLE *2
- LSL.W #1,D7 ; Z ANGLE *2
- MOVE.W (A3,D5.W),D3 ; COS(XGRAD)
- MOVE.W (A2,D5.W),D4 ; SIN(XGRAD)
- MULS D1,D3 ; Y*COS(XGRAD)
- MULS D2,D4 ; Z*SIN(XGRAD)
- SUB.L D4,D3 ; Y*COS(XGRAD) - Z*SIN(XGRAD)
- LSL.L #2,D3 ; 4*(Y*COS(XGRAD)-Z*SIN(XGRAD))
- MOVE.L D3,Y1 ; Y-COORDINATE AROUND X AXIS
- MOVE.W (A2,D5.W),D3 ; SIN(XGRAD)
- MOVE.W (A3,D5.W),D4 ; COS(XGRAD)
- MULS D1,D3 ; Y*SIN(XGRAD)
- MULS D2,D4 ; Z*COS(XGRAD)
- ADD.L D4,D3 ; Y*SIN(XGRAD) + Z*COS(XGRAD)
- LSL.L #2,D3 ; 4*(Y*SIN(XGRAD)+Z*COS(XGRAD))
- MOVE.L D3,Z1 ; Z-COORDINATE AROUND X AXIS
- MOVE.W (A3,D6.W),D3 ; COS(YGRAD)
- MOVE.W (A2,D6.W),D4 ; SIN(YGRAD)
- MULS D0,D3 ; X*COS(YGRAD)
- MULS Z1(PC),D4 ; Z*SIN(YGRAD)
- SUB.L D4,D3 ; X*COS(YGRAD) - Z*SIN(YGRAD)
- LSL.L #2,D3 ; 4*(X*COS(YGRAD)-Z*SIN(YGRAD))
- MOVE.L D3,X2 ; X-COORDINATE AROUND Y AXIS
- MOVE.W (A2,D6.W),D2 ; SIN(YGRAD)
- MOVE.W (A3,D6.W),D4 ; COS(YGRAD)
- MULS D0,D2 ; X*SIN(YGRAD)
- MULS Z1(PC),D4 ; Z*COS(YGRAD)
- ADD.L D4,D2 ; X*SIN(YGRAD) + Z*COS(YGRAD)
- LSL.L #2,D2 ; 4*(X*SIN(YGRAD)+Z*COS(YGRAD))
- SWAP D2 ; FAST DIVISION BY 65535
- EXT.L D2 ; Z-COORDINATE AROUND Y AND X
- MOVE.W (A3,D7.W),D0 ; COS(ZGRAD)
- MOVE.W (A2,D7.W),D4 ; SIN(ZGRAD)
- MULS X2(PC),D0 ; X*COS(ZGRAD)
- MULS Y1(PC),D4 ; Y*SIN(ZGRAD)
- SUB.L D4,D0 ; X*COS(ZGRAD) - Y*SIN(ZGRAD)
- LSL.L #2,D0 ; 4*(X*COS(ZGRAD)-Y*SIN(ZGRAD))
- SWAP D0 ; FAST DIVISION BY 65535
- EXT.L D0 ; X-COORDINATE AROUND Y AND Z
- MOVE.W (A2,D7.W),D1 ; SIN(ZGRAD)
- MOVE.W (A3,D7.W),D3 ; COS(ZGRAD)
- MULS X2(PC),D1 ; X*SIN(ZGRAD)
- MULS Y1(PC),D3 ; Y*COS(ZGRAD)
- ADD.L D3,D1 ; X*SIN(ZGRAD) + Y*COS(ZGRAD)
- LSL.L #2,D1 ; 4*(X*SIN(ZGRAD)+Y*COS(ZGRAD))
- SWAP D1 ; FAST DIVISION BY 65535
- EXT.L D1 ; Y-COORDINATE AROUND X AND Z
- RTS
-
- ** ²ROTATE PLANES VECTOR NORMAL¹ ************************************************
-
- NORMAL MOVE.W XVINKEL(PC),D5
- MOVE.W YVINKEL(PC),D6
- LSL.W #1,D5
- LSL.W #1,D6
- MOVE.W (A2,D5.W),D3
- MOVE.W (A3,D5.W),D4
- MULS D1,D3
- MULS D2,D4
- ADD.L D4,D3
- LSL.L #2,D3
- MOVE.L D3,Z1 ; ³Z ROTATED AROUND X¹
- MOVE.W (A2,D6.W),D2
- MOVE.W (A3,D6.W),D4
- MULS D0,D2
- MULS Z1(PC),D4
- ADD.L D4,D2
- LSL.L #2,D2
- SWAP D2
- EXT.L D2 ; ³Z ROTATED AROUND Y AND X¹
- RTS
-
- ** ²CONVERT POINT FROM 3D TO 2D¹ ************************************************
-
- CONVERT MULS ZOOM(PC),D0
- MULS ZOOM(PC),D1
- DIVS D2,D0
- DIVS D2,D1
- RTS
-
- ** ²DRAW LINE¹ ******************************************************************
-
- LINE TST.W (A1)+ ; ³DRAW LINE FROM LAST POINT?¹
- BNE.B DRAW
- MOVE.W D0,LASTX ; ³NO! THEN JUST SAVE THIS POINT¹
- MOVE.W D1,LASTY
- RTS
- DRAW MOVE.W LASTX(PC),D2
- MOVE.W LASTY(PC),D3
- MOVE.W D0,LASTX
- MOVE.W D1,LASTY
- EXG D1,D2
- CMP D2,D3
- BEQ.W DRAWOUT
- BPL.B BLINE
- EXG D0,D1
- EXG D2,D3
- BLINE SUBQ #1,D3
- MOVE D1,D6
- SUB D0,D6
- BMI.S XL0
- MOVE.W D3,D7
- SUB.W D2,D7
- BMI.S XG0YL0
- MOVE.W D7,D5
- SUB.W D6,D5
- BMI.S O4
- MOVE.B #1,BLTC1
- BRA.S OCTOK
- O4 MOVE.B #17,BLTC1
- BRA.S OCTOK
- XG0YL0 NEG.W D7
- MOVE.W D7,D5
- SUB.W D6,D5
- BMI.S O6
- MOVE.B #5,BLTC1
- BRA.S OCTOK
- O6 MOVE.B #25,BLTC1
- BRA.S OCTOK
- XL0 NEG.W D6
- MOVE.W D3,D7
- SUB.W D2,D7
- BMI.S XL0YL0
- MOVE.W D7,D5
- SUB.W D6,D5
- BMI.S O5
- MOVE.B #9,BLTC1
- BRA.S OCTOK
- O5 MOVE.B #21,BLTC1
- BRA.S OCTOK
- XL0YL0 NEG.W D7
- MOVE.W D7,D5
- SUB.W D6,D5
- BMI.S O7
- MOVE.B #13,BLTC1
- BRA.S OCTOK
- O7 MOVE.B #29,BLTC1
- OCTOK MOVEQ #0,D4
- MOVE.W D0,D4
- AND.W #15,D4
- SWAP D4
- LSR.L #4,D4
- OR.W #$B4A,D4
- MOVEQ #0,D3
- LSL #3,D2
- MOVE D2,D3
- LSL #2,D2
- ADD D2,D3
- LSR #3,D0
- AND.B #$FE,D0
- ADD D0,D3
- ADD.L A0,D3
- TST D5
- BMI.S XMAXI
- EXG D6,D7
- NEG.W D5
- XMAXI MOVE.W D6,D1
- ADD.W #1,D1
- LSL.W #6,D1
- ADD.W #2,D1
- MOVE.W D5,D0
- ADD.W D7,D0
- LSL.W #2,D7
- MOVE.W D0,D2
- SUB.W D6,D2
- ADD.W D2,D2
- TST.W D0
- BPL.S PLUS
- OR.B #64,BLTC1
- PLUS ADD.W D0,D0
- EXT.L D0
- WDRAW BTST #6,$DFF002
- BNE.S WDRAW
- CLR D6
- MOVE.B BLTC1(PC),D6
- OR.W #2,D6
- MOVE.W D6,$DFF042
- MOVE.W D4,$DFF040
- CLR $DFF070
- MOVE.W #$8000,$DFF074
- MOVE.W #$FFFF,$DFF072
- MOVE.L #$FFFFFFFF,$DFF044
- MOVE.W #40,$DFF060
- MOVE.W #40,$DFF066
- MOVE.W D7,$DFF062
- MOVE.W D2,$DFF064
- MOVE.L D3,$DFF048
- MOVE.L D3,$DFF054
- MOVE.L D0,$DFF050
- MOVE.W D1,$DFF058
- DRAWOUT RTS
-
- ** ²NOTE PLANE MIN AND MAX FOR THIS PLANE¹ **************************************
-
- EXTREM CMP.W YMIN(PC),D1
- BHI.B NOYMIN
- MOVE.W D1,YMIN
- NOYMIN CMP.W YMAX(PC),D1
- BLT.B NOYMAX
- MOVE.W D1,YMAX
- NOYMAX CMP.W XMIN(PC),D0
- BHI.B NOXMIN
- MOVE.W D0,XMIN
- NOXMIN CMP.W XMAX(PC),D0
- BLT.B NOXMAX
- MOVE.W D0,XMAX
- NOXMAX RTS
-
- ** ²NOTE MIN AND MAX FOR ALL PLANES¹ ********************************************
-
- GLOBAL MOVE.W XMIN(PC),D0
- CMP.W GLOBALXMIN(PC),D0
- BHI.B NOGLOBX
- MOVE.W D0,GLOBALXMIN
- NOGLOBX MOVE.W XMAX(PC),D0
- CMP.W GLOBALXMAX(PC),D0
- BLT.B GLOBOY1
- MOVE.W D0,GLOBALXMAX
- GLOBOY1 MOVE.W YMIN(PC),D0
- CMP.W GLOBALYMIN(PC),D0
- BHI.B NOGLOBY
- MOVE.W D0,GLOBALYMIN
- NOGLOBY MOVE.W YMAX(PC),D0
- CMP.W GLOBALYMAX(PC),D0
- BLT.B GLOBOUT
- MOVE.W D0,GLOBALYMAX
- GLOBOUT RTS
-
- ** ²CLACULATE NEW VIEW ANGLE¹ ***************************************************
-
- ANGLES MOVE.W YDELTA(PC),D0
- ADD.W D0,YVINKEL ; ³NEW Y ANGLE¹
- CMP.W #512,YVINKEL
- BLT.B XANGLE
- SUB.W #512,YVINKEL
- XANGLE MOVE.W XDELTA(PC),D0
- ADD.W D0,XVINKEL ; ³NEW X ANGLE¹
- CMP.W #512,XVINKEL
- BLT.B ZANGLE
- SUB.W #512,XVINKEL
- ZANGLE MOVE.W ZDELTA(PC),D0
- ADD.W D0,ZVINKEL ; ³NEW Z ANGLE¹
- CMP.W #512,ZVINKEL
- BLT.B ANGLOUT
- SUB.W #512,ZVINKEL
- ANGLOUT RTS
-
- ** ²FLIP BETWEEN FRAMESBUFFERS¹ *************************************************
-
- FLIP_SCREEN
- MOVEQ #6,D1
- MOVEQ #2,D2
- MOVE.W PLANER(PC),D3
- LEA.L PLANES,A0
- CMP.L #SCREEN1,SCREEN_ADRESS
- BEQ.S FLIP_TO_SCREEN2
- MOVE.L #SCREEN2,D0
- FLIP1 MOVE.W D0,(A0,D1.W)
- SWAP D0
- MOVE.W D0,(A0,D2.W)
- SWAP D0
- ADDQ #8,D1
- ADDQ #8,D2
- ADD.L #10240,D0
- SUBQ.W #1,D3
- BNE.B FLIP1
- MOVE.L #SCREEN1,SCREEN_ADRESS
- RTS
- FLIP_TO_SCREEN2
- MOVE.L #SCREEN1,D0
- FLIP2 MOVE.W D0,(A0,D1.W)
- SWAP D0
- MOVE.W D0,(A0,D2.W)
- SWAP D0
- ADDQ #8,D1
- ADDQ #8,D2
- ADD.L #10240,D0
- SUBQ.W #1,D3
- BNE.B FLIP2
- MOVE.L #SCREEN2,SCREEN_ADRESS
- RTS
-
- ** ²CLEAR SCREEN¹ ***************************************************************
-
- CLEAR CMP.W #320,GLOBALXMIN
- BEQ.W CLROUT
- MOVE.L SCREEN_ADRESS(PC),D0
- MOVE.W GLOBALXMIN(PC),D1
- MOVE.W GLOBALXMAX(PC),D2
- SUB.W D1,D2 ; ³D2 = CLEAR WIDTH IN PIXELS¹
- EXT.L D1
- LSR.W #3,D1 ; ³D1 = LEFT PIXELS IN BYTES¹
- SUBQ.W #1,D1
- ADD.L D1,D0 ; ³D0 = START ADDRESS¹
- LSR.W #4,D2 ; ³D2 = CLEAR WIDTH IN WORDS¹
- ADDQ.W #3,D2 ; ³FOR SAFETY¹
- MOVE.W D2,D1
- LSL.W #1,D1 ; ³D1 = CLEAR WIDTH IN BYTES¹
- MOVE.W #40,D3
- SUB.W D1,D3 ; ³D3 = CLEAR MODULO¹
- MOVE.W GLOBALYMIN(PC),D4
- SUB.W SAFETY(PC),D4
- MOVE.W GLOBALYMAX(PC),D5
- SUB.W D4,D5 ; ³HIGHT¹
- ADD.W SAFETY(PC),D5
- MULU #40,D4
- EXT.L D4
- ADD.L D4,D0
- LSL.W #6,D5
- OR.W D5,D2 ; ³HIGHT AND WIDTH¹
- CLR1 BTST #14,$DFF002
- BNE.S CLR1
- MOVE.W #$0100,$DFF040
- MOVE.W #$0000,$DFF042
- MOVE.L #$FFFFFFFF,$DFF044
- MOVE.L D0,$DFF054
- MOVE.W D3,$DFF066
- MOVE.W D2,$DFF058
- ADD.L #10240,D0 ; ³POINT ON NEXT PLANE¹
- MOVE.W PLANER(PC),D4
- SUBQ #1,D4
- CLR2 BTST #14,$DFF002
- BNE.S CLR2
- MOVE.L D0,$DFF054
- MOVE.W D3,$DFF066
- MOVE.W D2,$DFF058
- ADD.L #10240,D0 ; ³POINT ON NEXT PLANE¹
- SUBQ #1,D4
- BNE.B CLR2
- CLROUT RTS
-
- ** ²BLITTER FILL (DESCENDING MODE)¹ *********************************************
-
- FILL MOVE.L A0,D0 ; ³SCREEN ADDRESS¹
- MOVE.W YMAX(PC),D1
- MULU #40,D1
- ADD.L D1,D0 ; ³D0 = BUTTOM VERTICAL LINE¹
- MOVE.W #320,D2
- SUB.W XMAX(PC),D2
- LSR.W #3,D2 ; ³16 PIXEL PRECISION¹
- EXT.L D2
- SUB.L D2,D0 ; ³D0 = START ADDRESS¹
- MOVE.W XMAX(PC),D1
- SUB.W XMIN(PC),D1 ; ³D1 = FILL WIDTH IN PIXELS¹
- LSR.W #4,D1 ; ³D1 = FILL WIDTH IN WORDS¹
- ADDQ.W #4,D1
- MOVE.W D1,D2
- MOVE.W #40,D3 ; ³FULL SCREEN MODULO¹
- LSL.W #1,D2 ; ³D2 = FILL WIDTH IN BYTES¹
- SUB.W D2,D3 ; ³D3 = FILL MODULO¹¹
- MOVE.W YMAX(PC),D2
- SUB.W YMIN(PC),D2 ; ³D2 = HIGHT IN PIXELS¹
- LSL.W #6,D2 ; ³PLACE HIGHT ON RIGHT BITS¹
- OR.W D2,D1 ; ³D1 = FILL HIGHT AND WIDTH¹
- FREADY BTST #14,$DFF002
- BNE.B FREADY
- MOVE.L D0,$DFF050
- MOVE.L D0,$DFF054
- MOVE.W #$09F0,$DFF040 ; ³MINITERM D=A¹
- MOVE.W #%0000000000010010,$DFF042 ; ³EXCLUSIVE FILL (BIT 4)¹
- MOVE.L #$FFFFFFFF,$DFF044 ; ³MASKS¹
- MOVE.W D3,$DFF064 ; ³A MODULO¹
- MOVE.W D3,$DFF066 ; ³D MODULO¹
- MOVE.W D1,$DFF058 ; ³FILL HIGHT AND START ADDRESS¹
- RTS
-
- *******************************************************************************
- ** ²THIRD LEVEL INTERRUPT¹ ******************************************************
- *******************************************************************************
-
- MYIRQ MOVEM.L D0-A6,-(A7)
-
- JSR CLEAR
- JSR VECTOR
- JSR FLIP_SCREEN
-
- wait btst #14,$dff002
- bne.b wait
-
- MOVE.W #$20,$DFF09C
- MOVEM.L (A7)+,D0-A6
- RTE
-
- ** ²DATA¹ ***********************************************************************
-
- STARTRAST DC.W $5401
- RASTERLINES DC.W 170
- ZOOM DC.W 280
- SAFETY DC.W 6 ; ³HIGH SAFETY TAKES MORE RASTER¹
- OLDIRQ DC.L 0
- INTENA DC.W 0
- DMACON DC.W 0
- ADKCON DC.W 0
- SCREEN_ADRESS DC.L SCREEN1
- ADJUST DC.W 0
- PLANER DC.W 3 ; ³ANTAL PLANER¹
- XCENTER DC.W 159
- YCENTER DC.W 128
- ZCENTER DC.W 460
- COUNTER DC.W 0
- XVINKEL DC.W 256
- YVINKEL DC.W 0
- ZVINKEL DC.W 0
- YDELTA DC.W 3
- XDELTA DC.W 4
- ZDELTA DC.W 1
- Y1 DC.L 0
- Z1 DC.L 0
- X2 DC.L 0
- LASTX DC.W 0
- LASTY DC.W 0
- YMIN DC.W 256
- YMAX DC.W 0
- XMIN DC.W 320
- XMAX DC.W 0
- GLOBALYMIN DC.W 120
- GLOBALYMAX DC.W 140
- GLOBALXMIN DC.W 150
- GLOBALXMAX DC.W 170
- BLTC1 DC.B 0
- EVEN
-
- SOURCE DC.W $0000,$0100,$0210,$0320,$0430,$0540,$0650,$0760,$0870,$0980
- DC.W $0A90,$0BA0,$0C90,$0B80,$0A70,$0960,$0850,$0740,$0630,$0520
- DC.W $0410,$0300,$0100,$0100
-
- DC.W $0001,$0002,$0003,$0004,$0005,$0006,$0007,$0008,$0009,$000A
- DC.W $000B,$000C,$000B,$000A,$0009,$0008,$0007,$0006,$0005,$0004
- DC.W $0003,$0002,$0001,$0000
-
- DC.W $0111,$0222,$0333,$0444,$0555,$0666,$0777,$0888,$0999,$0AAA
- DC.W $0BBB,$0CCC,$0BBB,$0AAA,$0999,$0888,$0777,$0666,$0555,$0444
- DC.W $0333,$0222,$0111,$0000
-
- DC.W $0100,$0200,$0301,$0402,$0503,$0604,$0705,$0806,$0907,$0A08
- DC.W $0B09,$0C0A,$0B09,$0A08,$0907,$0806,$0705,$0604,$0503,$0402
- DC.W $0301,$0200,$0100,$0000
-
- DC.W $0010,$0020,$0030,$0040,$0050,$0060,$0070,$0080,$0090,$00A0
- DC.W $00B0,$00C0,$00B0,$00A0,$0090,$0080,$0070,$0060,$0050,$0040
- DC.W $0030,$0020,$0010,$0000
-
- DC.W $0001,$0002,$0013,$0024,$0035,$0046,$0057,$0068,$0079,$008A
- DC.W $009B,$00AC,$009B,$008A,$0079,$0068,$0057,$0046,$0035,$0024
- DC.W $0013,$0002,$0001,$0000
-
- DC.W $0001,$0002,$0103,$0204,$0305,$0406,$0507,$0608,$0709,$090A
- DC.W $0A0B,$090C,$080B,$070A,$0609,$0508,$0407,$0306,$0205,$0104
- DC.W $0003,$0002,$0001,$0000
-
- DESTIN BLK.W 170*200,$0000 ; RASTERLINES * 80
-
- ** ²OBJECT DATA¹ ****************************************************************
-
- FIGURE DC.W 0,-100,0,19,5,2
- DC.W 79,208,380,0
- DC.W 79,208,540,1
- DC.W 239,208,540,1
- DC.W 239,208,380,1
- DC.W 79,208,380,1
- DC.W 0,100,0,19,5,2
- DC.W 79,48,380,0
- DC.W 79,48,540,1
- DC.W 239,48,540,1
- DC.W 239,48,380,1
- DC.W 79,48,380,1
- DC.W 0,0,100,19,5,0 ; ³CUBE¹
- DC.W 79,48,380,0
- DC.W 79,208,380,1
- DC.W 239,208,380,1
- DC.W 239,48,380,1
- DC.W 79,48,380,1
- DC.W 100,0,0,19,5,1
- DC.W 79,48,540,0
- DC.W 79,208,540,1
- DC.W 79,208,380,1
- DC.W 79,48,380,1
- DC.W 79,48,540,1
- DC.W -100,0,0,19,5,1
- DC.W 239,48,540,0
- DC.W 239,208,540,1
- DC.W 239,208,380,1
- DC.W 239,48,380,1
- DC.W 239,48,540,1
- DC.W 0,0,-100,19,5,0
- DC.W 79,48,540,0
- DC.W 79,208,540,1
- DC.W 239,208,540,1
- DC.W 239,48,540,1
- DC.W 79,48,540,1
- DC.W $FFFF
-
- SECTION B,DATA_C
-
- ** ²COPPERLIST¹ *****************************************************************
-
- COPPER1 DC.W $0106,$0000,$01FC,$0000
- DC.W $008E,$2C81,$0090,$2CC1
- DC.W $0092,$0038,$0094,$00D0
- DC.W $0102,$0000,$0104,$0000
- DC.W $0108,$0000,$010A,$0000
-
- DC.W $0180,$0000,$0182,$0BBB
- DC.W $0184,$0888,$0186,$0000
- DC.W $0188,$0555,$018A,$0000
- DC.W $018C,$0000,$018E,$0000
-
- PLANES DC.W $00E0,$0000,$00E2,$0000
- DC.W $00E4,$0000,$00E6,$0000
- DC.W $00E8,$0000,$00EA,$0000
- DC.W $00EC,$0000,$00EE,$0000
- DC.W $00F0,$0000,$00F2,$0000
- DC.W $3001,$FF00
- NUMBER DC.W $0100,$0200
-
- RASTER BLK.W [8*170],$0000
-
- DC.W $FFE1,$FFFE,$2901,$FF00
- DC.W $0100,$0200
- ADRESS2 DC.W $0084,$0000 ; ³ADDRESS¹
- DC.W $0086,$0000
- DC.W $008A,$0000 ; ³RESTART COPPERLIST (CLEAR STROBE)¹
- DC.W $FFFF,$FFFE
-
- ** ²SCREEN¹ *********************************************************************
-
- SCREEN1 BLK.B [320/8*1280],$00
- SCREEN2 BLK.B [320/8*1280],$00
-
- SECTION TABLES,DATA_F
-
- SIN_TABLE
- DC.W 0
- DC.W 201
- DC.W 402
- DC.W 603
- DC.W 803
- DC.W 1004
- DC.W 1205
- DC.W 1405
- DC.W 1605
- DC.W 1805
- DC.W 2005
- DC.W 2204
- DC.W 2404
- DC.W 2602
- DC.W 2801
- DC.W 2998
- DC.W 3196
- DC.W 3393
- DC.W 3589
- DC.W 3785
- DC.W 3980
- DC.W 4175
- DC.W 4369
- DC.W 4563
- DC.W 4756
- DC.W 4948
- DC.W 5139
- DC.W 5329
- DC.W 5519
- DC.W 5708
- DC.W 5896
- DC.W 6083
- DC.W 6269
- DC.W 6455
- DC.W 6639
- DC.W 6822
- DC.W 7005
- DC.W 7186
- DC.W 7366
- DC.W 7545
- DC.W 7723
- DC.W 7900
- DC.W 8075
- DC.W 8249
- DC.W 8423
- DC.W 8594
- DC.W 8765
- DC.W 8934
- DC.W 9102
- DC.W 9268
- DC.W 9434
- DC.W 9597
- DC.W 9759
- DC.W 9920
- DC.W 10079
- DC.W 10237
- DC.W 10393
- DC.W 10548
- DC.W 10701
- DC.W 10853
- DC.W 11002
- DC.W 11150
- DC.W 11297
- DC.W 11442
- DC.W 11585
- DC.W 11726
- DC.W 11866
- DC.W 12003
- DC.W 12139
- DC.W 12273
- DC.W 12406
- DC.W 12536
- DC.W 12665
- DC.W 12791
- DC.W 12916
- DC.W 13038
- DC.W 13159
- DC.W 13278
- DC.W 13395
- DC.W 13510
- DC.W 13622
- DC.W 13733
- DC.W 13842
- DC.W 13948
- DC.W 14053
- DC.W 14155
- DC.W 14255
- DC.W 14353
- DC.W 14449
- DC.W 14543
- DC.W 14634
- DC.W 14723
- DC.W 14810
- DC.W 14895
- DC.W 14978
- DC.W 15058
- DC.W 15136
- DC.W 15212
- DC.W 15286
- DC.W 15357
- DC.W 15426
- DC.W 15492
- DC.W 15557
- DC.W 15618
- DC.W 15678
- DC.W 15735
- DC.W 15790
- DC.W 15842
- DC.W 15892
- DC.W 15940
- DC.W 15985
- DC.W 16028
- DC.W 16069
- DC.W 16107
- DC.W 16142
- DC.W 16175
- DC.W 16206
- DC.W 16234
- DC.W 16260
- DC.W 16284
- DC.W 16305
- DC.W 16323
- DC.W 16339
- DC.W 16353
- DC.W 16364
- DC.W 16372
- DC.W 16379
- COS_TABLE
- DC.W 16382
- DC.W 16384
- DC.W 16382
- DC.W 16379
- DC.W 16372
- DC.W 16364
- DC.W 16353
- DC.W 16339
- DC.W 16323
- DC.W 16305
- DC.W 16284
- DC.W 16260
- DC.W 16234
- DC.W 16206
- DC.W 16175
- DC.W 16142
- DC.W 16107
- DC.W 16069
- DC.W 16028
- DC.W 15985
- DC.W 15940
- DC.W 15892
- DC.W 15842
- DC.W 15790
- DC.W 15735
- DC.W 15678
- DC.W 15618
- DC.W 15557
- DC.W 15492
- DC.W 15426
- DC.W 15357
- DC.W 15286
- DC.W 15212
- DC.W 15136
- DC.W 15058
- DC.W 14978
- DC.W 14895
- DC.W 14810
- DC.W 14723
- DC.W 14634
- DC.W 14543
- DC.W 14449
- DC.W 14353
- DC.W 14255
- DC.W 14155
- DC.W 14053
- DC.W 13948
- DC.W 13842
- DC.W 13733
- DC.W 13622
- DC.W 13510
- DC.W 13395
- DC.W 13278
- DC.W 13159
- DC.W 13038
- DC.W 12916
- DC.W 12791
- DC.W 12665
- DC.W 12536
- DC.W 12406
- DC.W 12273
- DC.W 12139
- DC.W 12003
- DC.W 11866
- DC.W 11726
- DC.W 11585
- DC.W 11442
- DC.W 11297
- DC.W 11150
- DC.W 11002
- DC.W 10853
- DC.W 10701
- DC.W 10548
- DC.W 10393
- DC.W 10237
- DC.W 10079
- DC.W 9920
- DC.W 9759
- DC.W 9597
- DC.W 9434
- DC.W 9268
- DC.W 9102
- DC.W 8934
- DC.W 8765
- DC.W 8594
- DC.W 8423
- DC.W 8249
- DC.W 8075
- DC.W 7900
- DC.W 7723
- DC.W 7545
- DC.W 7366
- DC.W 7186
- DC.W 7005
- DC.W 6822
- DC.W 6639
- DC.W 6455
- DC.W 6269
- DC.W 6083
- DC.W 5896
- DC.W 5708
- DC.W 5519
- DC.W 5329
- DC.W 5139
- DC.W 4948
- DC.W 4756
- DC.W 4563
- DC.W 4369
- DC.W 4175
- DC.W 3980
- DC.W 3785
- DC.W 3589
- DC.W 3393
- DC.W 3196
- DC.W 2998
- DC.W 2801
- DC.W 2602
- DC.W 2404
- DC.W 2204
- DC.W 2005
- DC.W 1805
- DC.W 1605
- DC.W 1405
- DC.W 1205
- DC.W 1004
- DC.W 803
- DC.W 603
- DC.W 402
- DC.W 201
- DC.W -1
- DC.W -202
- DC.W -403
- DC.W -604
- DC.W -804
- DC.W -1005
- DC.W -1206
- DC.W -1406
- DC.W -1606
- DC.W -1806
- DC.W -2006
- DC.W -2205
- DC.W -2405
- DC.W -2603
- DC.W -2802
- DC.W -2999
- DC.W -3197
- DC.W -3394
- DC.W -3590
- DC.W -3786
- DC.W -3981
- DC.W -4176
- DC.W -4370
- DC.W -4564
- DC.W -4757
- DC.W -4949
- DC.W -5140
- DC.W -5330
- DC.W -5520
- DC.W -5709
- DC.W -5897
- DC.W -6084
- DC.W -6270
- DC.W -6456
- DC.W -6640
- DC.W -6823
- DC.W -7006
- DC.W -7187
- DC.W -7367
- DC.W -7546
- DC.W -7724
- DC.W -7901
- DC.W -8076
- DC.W -8250
- DC.W -8424
- DC.W -8595
- DC.W -8766
- DC.W -8935
- DC.W -9103
- DC.W -9269
- DC.W -9435
- DC.W -9598
- DC.W -9760
- DC.W -9921
- DC.W -10080
- DC.W -10238
- DC.W -10394
- DC.W -10549
- DC.W -10702
- DC.W -10854
- DC.W -11003
- DC.W -11151
- DC.W -11298
- DC.W -11443
- DC.W -11586
- DC.W -11727
- DC.W -11867
- DC.W -12004
- DC.W -12140
- DC.W -12274
- DC.W -12407
- DC.W -12537
- DC.W -12666
- DC.W -12792
- DC.W -12917
- DC.W -13039
- DC.W -13160
- DC.W -13279
- DC.W -13396
- DC.W -13511
- DC.W -13623
- DC.W -13734
- DC.W -13843
- DC.W -13949
- DC.W -14054
- DC.W -14156
- DC.W -14256
- DC.W -14354
- DC.W -14450
- DC.W -14544
- DC.W -14635
- DC.W -14724
- DC.W -14811
- DC.W -14896
- DC.W -14979
- DC.W -15059
- DC.W -15137
- DC.W -15213
- DC.W -15287
- DC.W -15358
- DC.W -15427
- DC.W -15493
- DC.W -15558
- DC.W -15619
- DC.W -15679
- DC.W -15736
- DC.W -15791
- DC.W -15843
- DC.W -15893
- DC.W -15941
- DC.W -15986
- DC.W -16029
- DC.W -16070
- DC.W -16108
- DC.W -16143
- DC.W -16176
- DC.W -16207
- DC.W -16235
- DC.W -16261
- DC.W -16285
- DC.W -16306
- DC.W -16324
- DC.W -16340
- DC.W -16354
- DC.W -16365
- DC.W -16373
- DC.W -16380
- DC.W -16383
- DC.W -16384
- DC.W -16383
- DC.W -16380
- DC.W -16373
- DC.W -16365
- DC.W -16354
- DC.W -16340
- DC.W -16324
- DC.W -16306
- DC.W -16285
- DC.W -16261
- DC.W -16235
- DC.W -16207
- DC.W -16176
- DC.W -16143
- DC.W -16108
- DC.W -16070
- DC.W -16029
- DC.W -15986
- DC.W -15941
- DC.W -15893
- DC.W -15843
- DC.W -15791
- DC.W -15736
- DC.W -15679
- DC.W -15619
- DC.W -15558
- DC.W -15493
- DC.W -15427
- DC.W -15358
- DC.W -15287
- DC.W -15213
- DC.W -15137
- DC.W -15059
- DC.W -14979
- DC.W -14896
- DC.W -14811
- DC.W -14724
- DC.W -14635
- DC.W -14544
- DC.W -14450
- DC.W -14354
- DC.W -14256
- DC.W -14156
- DC.W -14054
- DC.W -13949
- DC.W -13843
- DC.W -13734
- DC.W -13623
- DC.W -13511
- DC.W -13396
- DC.W -13279
- DC.W -13160
- DC.W -13039
- DC.W -12917
- DC.W -12792
- DC.W -12666
- DC.W -12537
- DC.W -12407
- DC.W -12274
- DC.W -12140
- DC.W -12004
- DC.W -11867
- DC.W -11727
- DC.W -11586
- DC.W -11443
- DC.W -11298
- DC.W -11151
- DC.W -11003
- DC.W -10854
- DC.W -10702
- DC.W -10549
- DC.W -10394
- DC.W -10238
- DC.W -10080
- DC.W -9921
- DC.W -9760
- DC.W -9598
- DC.W -9435
- DC.W -9269
- DC.W -9103
- DC.W -8935
- DC.W -8766
- DC.W -8595
- DC.W -8424
- DC.W -8250
- DC.W -8076
- DC.W -7901
- DC.W -7724
- DC.W -7546
- DC.W -7367
- DC.W -7187
- DC.W -7006
- DC.W -6823
- DC.W -6640
- DC.W -6456
- DC.W -6270
- DC.W -6084
- DC.W -5897
- DC.W -5709
- DC.W -5520
- DC.W -5330
- DC.W -5140
- DC.W -4949
- DC.W -4757
- DC.W -4564
- DC.W -4370
- DC.W -4176
- DC.W -3981
- DC.W -3786
- DC.W -3590
- DC.W -3394
- DC.W -3197
- DC.W -2999
- DC.W -2802
- DC.W -2603
- DC.W -2405
- DC.W -2205
- DC.W -2006
- DC.W -1806
- DC.W -1606
- DC.W -1406
- DC.W -1206
- DC.W -1005
- DC.W -804
- DC.W -604
- DC.W -403
- DC.W -202
- DC.W -1
- DC.W 201
- DC.W 402
- DC.W 603
- DC.W 803
- DC.W 1004
- DC.W 1205
- DC.W 1405
- DC.W 1605
- DC.W 1805
- DC.W 2005
- DC.W 2204
- DC.W 2404
- DC.W 2602
- DC.W 2801
- DC.W 2998
- DC.W 3196
- DC.W 3393
- DC.W 3589
- DC.W 3785
- DC.W 3980
- DC.W 4175
- DC.W 4369
- DC.W 4563
- DC.W 4756
- DC.W 4948
- DC.W 5139
- DC.W 5329
- DC.W 5519
- DC.W 5708
- DC.W 5896
- DC.W 6083
- DC.W 6269
- DC.W 6455
- DC.W 6639
- DC.W 6822
- DC.W 7005
- DC.W 7186
- DC.W 7366
- DC.W 7545
- DC.W 7723
- DC.W 7900
- DC.W 8075
- DC.W 8249
- DC.W 8423
- DC.W 8594
- DC.W 8765
- DC.W 8934
- DC.W 9102
- DC.W 9268
- DC.W 9434
- DC.W 9597
- DC.W 9759
- DC.W 9920
- DC.W 10079
- DC.W 10237
- DC.W 10393
- DC.W 10548
- DC.W 10701
- DC.W 10853
- DC.W 11002
- DC.W 11150
- DC.W 11297
- DC.W 11442
- DC.W 11585
- DC.W 11726
- DC.W 11866
- DC.W 12003
- DC.W 12139
- DC.W 12273
- DC.W 12406
- DC.W 12536
- DC.W 12665
- DC.W 12791
- DC.W 12916
- DC.W 13038
- DC.W 13159
- DC.W 13278
- DC.W 13395
- DC.W 13510
- DC.W 13622
- DC.W 13733
- DC.W 13842
- DC.W 13948
- DC.W 14053
- DC.W 14155
- DC.W 14255
- DC.W 14353
- DC.W 14449
- DC.W 14543
- DC.W 14634
- DC.W 14723
- DC.W 14810
- DC.W 14895
- DC.W 14978
- DC.W 15058
- DC.W 15136
- DC.W 15212
- DC.W 15286
- DC.W 15357
- DC.W 15426
- DC.W 15492
- DC.W 15557
- DC.W 15618
- DC.W 15678
- DC.W 15735
- DC.W 15790
- DC.W 15842
- DC.W 15892
- DC.W 15940
- DC.W 15985
- DC.W 16028
- DC.W 16069
- DC.W 16107
- DC.W 16142
- DC.W 16175
- DC.W 16206
- DC.W 16234
- DC.W 16260
- DC.W 16284
- DC.W 16305
- DC.W 16323
- DC.W 16339
- DC.W 16353
- DC.W 16364
- DC.W 16372
- DC.W 16379
- DC.W 16382
- *³***********************************¹